// JavaScript Document
/*DEFINICION DE FUNCIONES Y VARIABLES GLOBALES*/
	var misPuntosHash = new Hashtable(); ////hash de todos los puntos, accesible por id del punto
	var misGruposHash = new Hashtable(); ////hash de todos los grupos, accesible por id del grupo
	if (msie){
		var misPuntosPopupClass = OpenLayers.Class(OpenLayers.Popup.Anchored, {
            	'autoSize': true,
				'minSize': new OpenLayers.Size(250,150),
				'maxSize': new OpenLayers.Size(600,400)
        	});
	}
	else{
		var misPuntosPopupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
            	'autoSize': true,
				'maxSize': new OpenLayers.Size(600,400)
       		});
	}
	function createHighlightFromIdPoint(idPoint){
		var lonlat = new OpenLayers.LonLat(parseFloat(misPuntosHash.get(idPoint.toString()).longitud), parseFloat(misPuntosHash.get(idPoint.toString()).latitud)).transform(cMapController.getMapActive().getDisplayProjection(), cMapController.getMapActive().getProjection());
		cMapController.getMapActive().putHighlightCircle(lonlat);
	}

   function addOptionsToGrupoSelector(){
		var misGruposList = misGruposHash.values();
		if (misGruposList.length>0){
		   selector = document.getElementById('gruposPunto');
		   selector.options.length=0; //remove all options
		   newOption = document.createElement('option');
		   newOption.value = '0';
		   newOption.text = '';
		   try {
    			selector.add(newOption, null); // para todos los browsers (STANDART)
			   }
		  catch(ex) {
			    selector.add(newOption); // para IE
			   }
		   for (var i=0; i<misGruposList.length; i++){
			 if (misGruposList[i]!='toJSONString'){
				 newOption = document.createElement('option');
				 newOption.value = misGruposList[i].id;
				 newOption.text = misGruposList[i].nombre;
				   try {
    					selector.add(newOption, null); // para todos los browsers (STANDART)
					   }
				  catch(ex) {
					    selector.add(newOption); // para IE
					   }
			 }
		   }
		}
	}

   function createPopUpPoint(e, idPoint, element,isMenu){
	   PopUpMenuMap = new PopupMenu();
	   var heredado = eval(misPuntosHash.get(idPoint.toString()).esflota==3);
	   if (indexOfArray(cMapController.getMapActive().getPuntosVisiblesId(),idPoint.toString())!=-1){
		    PopUpMenuMap.add('Ocultar', function(target) {
		    	cMapController.getMapActive().ocultarPunto(idPoint.toString());
	   		});
	 	    PopUpMenuMap.add('Localizar en el mapa', function(target) {
	 	    		dejarDeSeguir();
					createHighlightFromIdPoint(idPoint);
					cMapController.getMapActive().centrar(misPuntosHash.get(idPoint.toString()).latitud,misPuntosHash.get(idPoint.toString()).longitud);
	  	    });
	   }
	   else {
	   		PopUpMenuMap.add('Ver y localizar', function(target) {
	   			cMapController.getMapActive().mostrarPunto(idPoint.toString());
				dejarDeSeguir();
				createHighlightFromIdPoint(idPoint);
				cMapController.getMapActive().centrar(misPuntosHash.get(idPoint.toString()).latitud,misPuntosHash.get(idPoint.toString()).longitud);

	  	        });
	   		PopUpMenuMap.add('Ver', function(target) {
	   			cMapController.getMapActive().mostrarPunto(idPoint.toString());
	  	        });
	   }
	   if ((LOGIN.PERMISOS[7])&&((!heredado)||(parseInt(LOGIN.objetivo) == 3))){
		   PopUpMenuMap.addSeparator();
		   PopUpMenuMap.add('Modificar', function(target) {
    		  modificarPunto(idPoint.toString());
		   });
		   PopUpMenuMap.add('Eliminar', function(target) {
	    	  eliminarPuntos(idPoint.toString());
		   });
	   }

	   if (LOGIN.PERMISOS[7]){
		   PopUpMenuMap.addSeparator();
	  	   if (parseInt(LOGIN.objetivo) == 3 && !LOGIN.isBykom){ //SE PUEDE PUBLICAR SOLO SI ES FLOTA
		   	   if (parseInt(misPuntosHash.get(idPoint.toString()).publico))
		   			PopUpMenuMap.add('Dejar de publicar', function(target) {
	      				publicarPuntos(false, idPoint.toString());
		   			});
		   	   else
	   				PopUpMenuMap.add('Publicar', function(target) {
	      				publicarPuntos(true, idPoint.toString());
	  				});
	   		}
	   		if (parseInt((misPuntosHash.get(idPoint.toString()).seguro)))
	   			PopUpMenuMap.add('Desmarcarlo como seguro', function(target) {
					seguroPuntos(false, idPoint.toString());
		   		});
		    else
	   			PopUpMenuMap.add('Marcar como seguro', function(target) {
					seguroPuntos(true, idPoint.toString());
	   			});
	   }

	   if(cGeoController.implementaRouting()){
		   PopUpMenuMap.addSeparator();
		   PopUpMenuMap.add('Buscar moviles mas cercanos', function(target) {											  
			   cMapController.getMapActive().generateMovilesCercanosPunto(idPoint.toString(), false);
		   });
		   PopUpMenuMap.addSeparator();
		   PopUpMenuMap.add('Buscar moviles mas cercanos en automovil', function(target) {											  
			   cMapController.getMapActive().generateMovilesCercanosPuntoDWB(idPoint.toString(),1, false);
		   });
		   PopUpMenuMap.addSeparator();
		   PopUpMenuMap.add('Buscar moviles mas cercanos a pie', function(target) {											  
			   cMapController.getMapActive().generateMovilesCercanosPuntoDWB(idPoint.toString(),2, false);
		   });
		   PopUpMenuMap.addSeparator();
		   PopUpMenuMap.add('Buscar moviles mas cercanos en bicleta', function(target) {											  
			   cMapController.getMapActive().generateMovilesCercanosPuntoDWB(idPoint.toString(),3, false);
		   });
	   }

	   PopUpMenuMap.setSize(140, 0);
	   PopUpMenuMap.bind(element); // target is this pre block
	   PopUpMenuMap.show(e,isMenu);
	   return false;
   }
	
   function createPopUpGroup(e, idGrupo, element){

	   PopUpMenuMap = new PopupMenu();
		
	   if (LOGIN.PERMISOS[7]){	
		   PopUpMenuMap.add('Modificar', function(target) {
    		  modificarGrupo(idGrupo.toString());
		   });
		   PopUpMenuMap.add('Eliminar', function(target) {
			   cMapController.getMapActive().eliminarGrupos(idGrupo.toString());
		   });
		   PopUpMenuMap.addSeparator();
	   }
	   
	   PopUpMenuMap.add('Seleccionar todo', function(target) {
          checkedGrupo(idGrupo.toString(), true);
	   });
	   PopUpMenuMap.add('No seleccionar ninguno', function(target) {
	      checkedGrupo(idGrupo.toString(), false);
	   });

	   PopUpMenuMap.setSize(140, 0);
	   PopUpMenuMap.bind(element); // target is this pre block
	   PopUpMenuMap.show(e);
	   return false;
	}
	
	function getInfoMisPuntosHTML(puntoId){
    	miPunto = misPuntosHash.get(puntoId.toString());
    	var html = "<div class='popupGlobal'>";
    	html += "<div id='histInfo_"+puntoId+"' class='popupContent'>";
    	html += '<table width="200" border="0" cellpadding="0" cellspacing="0" >';
		//html = '<table width="200">;
		html += '<tr><td><span class="infoWindowTitle">'+miPunto.nombre+'</span></td>';
        	html += ' <td align="right" valign="top">';
		if ((parseInt(LOGIN.objetivoDB)==3)&&(miPunto.publico==1))
			html += '<img src="images/puntoPublico.gif" width="16" height="16" border="0" title="Punto publicado"/>';
		if (miPunto.seguro==1)	
			html += '<img src="images/puntoSeguro.gif" width="16" height="16" border="0" title="Punto seguro"/>';
		html += '</td></tr>';
		html += '<tr><td colspan="2"><span class="inputTEXT">'+miPunto.datos+'</span></td></tr>';
		html += '</table>';
		html += '</div>';
		html += '</div>';
		
		return html;
	}
/*************************FUNCIONES PARA PANTALLA PRINCIPAL************************/
	
	var reqHandlerMisPuntos = null;
	
	function verPuntosSeleccionados(){
		cMapController.getMapActive().setPuntosVisiblesId(new Array());
		for (i=0; i<cMapController.getMapActive().getPuntosSeleccionadosId().length;i++)
			cMapController.getMapActive().getPuntosVisiblesId()[i] = cMapController.getMapActive().getPuntosSeleccionadosId()[i];
		for (i=0; i<cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length;i++)
			cMapController.getMapActive().getPuntosVisiblesId().push(cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId()[i]);
		cMapController.getMapActive().refreshViewPoints();
	}
	
	function ocultarPuntosSeleccionados(){
		for (i=0;i<cMapController.getMapActive().getPuntosSeleccionadosId().length;i++){
			pos=indexOfArray(cMapController.getMapActive().getPuntosVisiblesId(),cMapController.getMapActive().getPuntosSeleccionadosId()[i].toString());
			if (pos!=-1)
				cMapController.getMapActive().getPuntosVisiblesId().splice(pos,1);
		}
		for (i=0;i<cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length;i++){
			pos=indexOfArray(cMapController.getMapActive().getPuntosVisiblesId(),cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId()[i].toString());
			if (pos!=-1)
				cMapController.getMapActive().getPuntosVisiblesId().splice(pos,1);
		}
		cMapController.getMapActive().refreshViewPoints();
	}
	
	function printTableMisPuntos(){	
		//tabla = '<table width="260">';
		//tabla += '<tr><td>';
		
		puntosTree = new dTree('puntosTree');
		puntosTree.add(0,-1,'');
		
		var misGruposList = misGruposHash.values();
		var sortArray = new SortArray(misGruposList,"QUICKSORT");
		sortArray.ordenar('A','nombre');

		var misGruposListKeys = new Array();
		for (var i=0; i<misGruposList.length; i++)
			misGruposListKeys.push(misGruposList[i].id);
		
		// Desde aca...
		for (var i=0; i<misGruposList.length; i++) {
			//var groupId = parseInt(misGruposList.id);
			var groupName = '<span class="inputLBL" oncontextmenu="return createPopUpGroup(event,'+misGruposList[i].id+',this);">'+misGruposList[i].nombre+'</span>';
			puntosTree.add(i+1,0,groupName,'','','','js/dtree/img/folder.gif');
		}
		
		var misPuntosList = misPuntosHash.values();
		sortArray = new SortArray(misPuntosList,"QUICKSORT");
		sortArray.ordenar('A','nombre');
		
		for (var i=0; i<misPuntosList.length; i++) {
			if (misPuntosList[i]!='toJSONString'){
				checked = '';
				var heredado = false; //es un punto de flota y soy un movil
				if (indexOfArray(cMapController.getMapActive().getPuntosSeleccionadosId(),misPuntosList[i].id.toString())!=-1)
					checked='checked';
				if (indexOfArray(cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId(),misPuntosList[i].id.toString())!=-1)
					checked='checked';
				if ( ( parseInt(LOGIN.objetivo) == 4 || parseInt(LOGIN.objetivoDB)==2)&&(misPuntosList[i].esflota==3) )
					heredado=true;
				itemSpan = "";
				if (!heredado){
					itemSpan += '<div class="itemPunto" oncontextmenu="return createPopUpPoint(event,'+misPuntosList[i].id+',this,true);">';
        			checkVal = " <input type='checkbox' name='boxPoints[]' value='"+misPuntosList[i].id+"' "+checked+" onClick='cMapController.getMapActive().checkedPunto(this);'>";
				} else {
					itemSpan += '<div class="itemPunto" oncontextmenu="return createPopUpPoint(event,'+misPuntosList[i].id+',this,true);">';
					checkVal = " <input type='checkbox' name='boxPoints[]' value='"+misPuntosList[i].id+"' "+checked+"onClick='cMapController.getMapActive().checkedPuntoHeredado(this);'>";
				}
				
				// Icono principal del punto
				itemSpan += '<img src="'+mapIcons.getMisPuntosIcon(misPuntosList[i].icono).url+'" width="16" height="16" border="0"/>';
				
				// Etiqueta nombre
				itemSpan += '<label> ' + misPuntosList[i].nombre + ' </label>';
				
				
				itemSpan += '<ul class="comandosVehiculo">';
				//SEGURO:
				if (misPuntosList[i].seguro==1) {
					itemSpan += '<li>';
					itemSpan += '<img src="images/puntoSeguro.gif" width="16" height="16" border="0" title="Punto seguro"/>';
					itemSpan += '</li>';
				} else 
					itemSpan += '<li>';
					itemSpan += '<img src="js/dtree/img/empty.gif" width="16" height="16" border="0"/>';
					itemSpan += '</li>';
				
				//PUBLICADO:
				if (parseInt(LOGIN.objetivo)==3) {
					if (misPuntosList[i].publico==1){
						itemSpan += '<li>';
						itemSpan += '<img src="images/puntoPublico.gif" width="16" height="16" border="0" title="Punto publicado"/>';
						itemSpan += '</li>';
					}else
						itemSpan += '<li>';
						itemSpan += '<img  src="js/dtree/img/empty.gif" width="16" height="16" border="0"/>';
						itemSpan += '</li>';
				}
				
				//VISIBILIDAD:
				if (indexOfArray(cMapController.getMapActive().getPuntosVisiblesId(),misPuntosList[i].id.toString())!=-1) {
					itemSpan += '<li>';
					itemSpan += '<img  src="images/puntoVisible.gif" border="0" onclick="cMapController.getMapActive().centrar('+misPuntosList[i].latitud+','+ misPuntosList[i].longitud +'); createHighlightFromIdPoint('+misPuntosList[i].id+');" style="cursor:pointer;" title="Punto visible (Click para localizar)"/>';
					itemSpan += '</li>';
				}	else  {
					itemSpan += '<li>';
					itemSpan += '<img  src="js/dtree/img/empty.gif" width="16" height="16" border="0"/>';
					itemSpan += '</li>';
				}
				
				itemSpan += '</ul>';
				itemSpan += '</div>';
				// ....hasta aca
				
				var posGroup = 0;
				if (parseInt(misPuntosList[i].grupoId)!=0){
					var pos = indexOfArray(misGruposListKeys,misPuntosList[i].grupoId.toString());
					if (pos!=-1)
						posGroup = pos+1;
				}				
				var nodeId = i+misGruposList.length+1;
				puntosTree.add(nodeId, posGroup, itemSpan, '', '', '', '', '', false, checkVal);
			}
		}
		
		document.getElementById('divListaPuntos').innerHTML = puntosTree;
	}

	function OnReadyStateChangeMisPuntos(){
		ready = reqHandlerMisPuntos.readyState;
		if(ready == READY_STATE_LOADING || ready == READY_STATE_LOADED){
			$j('#divListaPuntos').html("<img src='images/loader_accordeon.gif' alt='Cargando...' />");
		}else 	if (ready == READY_STATE_COMPLETE) {
			misPuntosJSON = jQuery.parseJSON(reqHandlerMisPuntos.responseText);
			if (misPuntosJSON.length != 'undefined') {
				for (i=0; i<misPuntosJSON.length; i++){
					misPuntosHash.put(misPuntosJSON[i].id.toString(),misPuntosJSON[i]);
					if(parseInt(misPuntosJSON[i].grupoId)!=0)//el punto pertenece a un grupo
						if (misGruposHash.containsKey(misPuntosJSON[i].grupoId.toString())){
							misGruposHash.get(misPuntosJSON[i].grupoId.toString()).PUNTOSID.push(misPuntosJSON[i].id.toString());
						}	
				}
				for(var i=0;i<cMapController.getMaps().length;i++){
					if(cMapController.getMapasVisibles().length>0){
						iMapaVisible = cMapController.getMapasVisibles()[i];
					}else{
						iMapaVisible = i;
					}
					cMapController.getMapById(iMapaVisible).refreshViewPoints();
				}
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
			if (LOGIN.PERMISOS[5]){
				dinamicIncludes_Map.setMessage('Cargando Mis Zonas...');
				CargarMisZonas();
			}else if (LOGIN.PERMISOS[20]){
					dinamicIncludes_Map.setMessage('Cargando Mis Rutas...');
					cMapController.cargarMisRutas();
			}else{
				cMapController.finCargaInicial();
			}
		}
	}
	

/*************************FUNCIONES PARA PANTALLA NUEVO PUNTO************************/
	newPointMarker = null;
	newPointEvents = null;
	newPointLayer = null; 
	
	//icono por defecto al marcar un nuevo punto
	//iconPoint = new OpenLayers.Icon("images/gmapIcons/newPoint.png", iconPointSize, null, iconPointCalculateOffset);
	iconPoint =  mapIcons.getMisPuntosIcon('0');
	
	function initMisPuntosSelectorTipo(){
		var selector = document.getElementById('tipoPunto');
		if (selector.options.length==1){
			var opciones = mapIcons.getMisPuntosLabels();
			for (var i=1; i<opciones.length; i++){
				var newOption = document.createElement('option');
				newOption.value = i;
				newOption.text = opciones[i];
				try {
    				selector.add(newOption, null); // para todos los browsers (STANDART)
				}catch(ex) {
					selector.add(newOption); // para IE
				}	
			}
		}
	}
	
	function nuevoPunto() {
		//mostrar panel de nuevo punto
		$j("#busquedaPuntoDireccion").show();
		if(!cGeoController.implementaGeoCoding()){
			$j("#busquedaPuntoDireccion").hide();
		}
		cMapController.getMapActive().setModoABMPuntos(true);
		dejarDeSeguir();
		document.getElementById('newPointTitle').innerHTML = "Nuevo Punto";
		document.getElementById('newPointDesc').innerHTML = "Para crear un nuevo punto de referencia puede buscarlo en el mapa y marcarlo con un 'click' o bien utilizar la busqueda de direcciones por calle y altura provistas en el menu superior."
		initMisPuntosSelectorTipo();		
		hideDiv('div_mispuntosPpal');
		hideDiv('div_searchPunto');
		showDiv('div_nuevoPunto');
		setEstadoNuevoPunto();
		cleanFormNuevoPunto();
	}
	
	var tipoIcon = "0";
	function marcarNuevoPunto(lonlat){
		if (newPointMarker!=null){
			newPointLayer.removeMarker(newPointMarker);
			newPointMarker.destroy();
		}	
		newPointMarker = cMapController.getMapActive().crearMarcaDePunto(lonlat,'NUEVO PUNTO',null,mapIcons.getMisPuntosIcon(tipoIcon));
		newPointLayer.addMarker(newPointMarker);
		var lonlat2 = lonlat.clone().transform(cMapController.getMapActive().getProjection(), cMapController.getMapActive().getDisplayProjection());
		document.getElementById('newLatitud').innerHTML = lonlat2.lat.toString().substr(0,11);
		document.getElementById('newLongitud').innerHTML = lonlat2.lon.toString().substr(0,11);
		cMapController.getMapActive().centrar(lonlat2.lat,lonlat2.lon);
	}
	
	function cleanEstadoNuevoPunto(){ //limpia el mapa del estado "MARCAR NUEVO PUNTO"
		cMapController.getMapActive().setModoABMPuntos(false);
		if(newPointEvents!=null){
		    newPointEvents.deactivate();
		    cMapController.getMapActive().getMap().removeControl(newPointEvents);
		}
		cMapController.getMapActive().getMap().addControl(cMapController.getMapActive().getDefaultEvents());
		cMapController.getMapActive().getDefaultEvents().activate();
		hideDiv('div_nuevoPunto');
		showDiv('div_mispuntosPpal');
		if (newPointLayer!=null){
			cMapController.getMapActive().getMap().removeLayer(newPointLayer);
			newPointLayer=null;
			newPointMarker=null;
		}
		cMapController.getMapActive().getMap().div.style.cursor="default";
	}
	
	function setEstadoNuevoPunto(){ //prepara el mapa para el estado "MARCAR NUEVO PUNTO"
	    newPointLayer = new OpenLayers.Layer.Markers( "Nuevo Punto" );
		puntoModificar = null;
		cMapController.getMapActive().getMap().addLayer(newPointLayer);
		cMapController.getMapActive().getDefaultEvents().deactivate();
		cMapController.getMapActive().getMap().removeControl(cMapController.getMapActive().getDefaultEvents());
		if (newPointEvents==null){
			newPointEvents = new OpenLayers.Control.NewPoint();	        
		}
		cMapController.getMapActive().getMap().addControl(newPointEvents);
        newPointEvents.activate();
        cMapController.getMapActive().getMap().div.style.cursor="crosshair";
        tipoIcon = "0";
	}
	function changeTipoPunto(nuevoTipo){
		tipoIcon = nuevoTipo;
		iconPoint.setUrl(mapIcons.getMisPuntosIcon(nuevoTipo).url);
		if (newPointMarker!=null){
			newPointMarker.icon.setUrl(mapIcons.getMisPuntosIcon(nuevoTipo).url);
		}
	}
	
	function cleanFormNuevoPunto(){
		hideDiv('newPointErrorDisplay');
		addOptionsToGrupoSelector();
		document.getElementById("newPointErrorDisplay").innerHTML = "";
		document.getElementById('puntoIdHID').value="";
		document.getElementById('newLatitud').innerHTML="";
		document.getElementById('newLongitud').innerHTML="";
		document.getElementById('tipoPunto').value="0";
		document.getElementById('descPunto').value="";
		document.getElementById('nombrePunto').value="";
		document.getElementById('puntoSeguroCHK').checked=false;
		if (parseInt(LOGIN.objetivo) == 3 && !LOGIN.isBykom)
			document.getElementById('puntoPublicoCHK').checked=false;
		if (newPointMarker!=null){
			newPointMarker.display(false);			
		}
		iconPoint.setUrl(mapIcons.getMisPuntosIcon('0').url);	
	}
	
	/*************************FUNCIONES PARA PANTALLA MODIFICAR PUNTO************************/
	var puntoModificar = null;
	var updatePointEvents = null;
	var dragUpdatePointEvents = null;
	
	function modificarPunto(idPoint) {
			cMapController.getMapActive().setModoABMPuntos(true);
			dejarDeSeguir();
			//mostrar panel de modificar punto
			document.getElementById('newPointTitle').innerHTML = "Modificar Punto";
			document.getElementById('newPointDesc').innerHTML = "Para modificar la altura del punto marcarlo con un 'click' arrastrarlo hasta la ubicacion deseada o bien utilizar la busqueda de direcciones por calle y altura provistas en el menu superior."
			initMisPuntosSelectorTipo();
			hideDiv('div_mispuntosPpal');
			hideDiv('div_searchPunto');
			showDiv('div_nuevoPunto');
			if ((idPoint!=null)||(puntoModificar==null))
				puntoModificar = misPuntosHash.get(idPoint.toString());
			cleanFormModificarPunto();
			setEstadoModificarPunto();
	}
		
	function setEstadoModificarPunto(){ //prepara el mapa para el estado "MODIFICAR PUNTO"
		newPointLayer = new OpenLayers.Layer.Markers( "Nuevo Punto" );
		cMapController.getMapActive().getMap().addLayer(newPointLayer);
		cMapController.getMapActive().ocultarPuntosVisibles();
		//creo la marker para modificar
		var lonlat = new OpenLayers.LonLat(parseFloat(puntoModificar.longitud), parseFloat(puntoModificar.latitud)).transform(cMapController.getMapActive().getDisplayProjection(), cMapController.getMapActive().getProjection());
		tipoIcon = puntoModificar.icono;
		newPointMarker = cMapController.getMapActive().crearMarcaDePunto(lonlat,puntoModificar.nombre,null,mapIcons.getMisPuntosIcon(tipoIcon));
		if (updatePointEvents==null){
			updatePointEvents = new OpenLayers.Control.UpdatePoint();
		}
		cMapController.getMapActive().getMap().addControl(updatePointEvents);
		cMapController.getMapActive().getDefaultEvents().deactivate();
        updatePointEvents.activate();
		
		newPointLayer.addMarker(newPointMarker);				
		cMapController.getMapActive().centrar(parseFloat(puntoModificar.latitud), parseFloat(puntoModificar.longitud));
		
		dragUpdatePointEvents = new OpenLayers.Control.DragMarker(newPointLayer, {
										'onComplete': function() { 
											var lonlat2 = newPointMarker.lonlat.clone().transform(cMapController.getMapActive().getProjection(), cMapController.getMapActive().getDisplayProjection());
											document.getElementById("newLatitud").innerHTML=lonlat2.lat.toString().substr(0,11);
											document.getElementById("newLongitud").innerHTML=lonlat2.lon.toString().substr(0,11);																					 					
											}
								});
		cMapController.getMapActive().getMap().addControl(dragUpdatePointEvents);
		dragUpdatePointEvents.activate();
		cMapController.getMapActive().getMap().div.style.cursor="crosshair";
	}
	
	function cleanEstadoModificarPunto(){ //limpia el mapa del estado "MODIFICAR PUNTO"
		hideDiv('div_nuevoPunto');
		showDiv('div_mispuntosPpal');
		cMapController.getMapActive().setModoABMPuntos(false);
		if(updatePointEvents!=null)
		    updatePointEvents.deactivate();
		
		if (dragUpdatePointEvents!=null){
			dragUpdatePointEvents.deactivate();
			cMapController.getMapActive().getMap().removeControl(dragUpdatePointEvents);
			dragUpdatePointEvents.destroy();
			dragUpdatePointEvents = null;		
		}
		if (newPointLayer!=null){
			cMapController.getMapActive().getMap().removeLayer(newPointLayer);
			newPointMarker=null;
		}
		cMapController.getMapActive().mostrarPuntosVisibles();	
		cMapController.getMapActive().getMap().div.style.cursor="default";
	}
	
	function cleanFormModificarPunto(){
		hideDiv('newPointErrorDisplay');
		addOptionsToGrupoSelector();
		document.getElementById("newPointErrorDisplay").innerHTML = "";
		document.getElementById('puntoIdHID').value = puntoModificar.id;
		document.getElementById('newLatitud').innerHTML = puntoModificar.latitud;
		document.getElementById('newLongitud').innerHTML = puntoModificar.longitud;
		document.getElementById('tipoPunto').value = puntoModificar.icono;
		document.getElementById('descPunto').value = puntoModificar.datos;
		document.getElementById('nombrePunto').value = puntoModificar.nombre;
		document.getElementById('gruposPunto').value = puntoModificar.grupoId;
		document.getElementById('puntoSeguroCHK').checked=false;
		if (puntoModificar.seguro==1)
			document.getElementById('puntoSeguroCHK').checked=true;
		if (parseInt(LOGIN.objetivo) == 3  && !LOGIN.isBykom){
			document.getElementById('puntoPublicoCHK').checked=false;
			if (puntoModificar.publico==1)
				document.getElementById('puntoPublicoCHK').checked=true;			
		}
		
		if(LOGIN.isBykom){
			$j("#toleranciaMisPuntos").val(puntoModificar.tolerancia);
		}
		iconPoint.setUrl(mapIcons.getMisPuntosIcon(puntoModificar.icono).url);
		if ((newPointLayer!=null)&&(newPointMarker!=null)){
			var lonlat = new OpenLayers.LonLat(parseFloat(puntoModificar.longitud), parseFloat(puntoModificar.latitud));
			marcarNuevoPunto(lonlat);
			/*newPointMarker.lonlat = lonlat;
			var newPx = newPointLayer.getViewPortPxFromLonLat(lonlat);
			newPointMarker.moveTo(newPx);
			newPointMarker.icon.setUrl(iconPoint.url);
			centrar(parseFloat(puntoModificar.latitud), parseFloat(puntoModificar.longitud));*/
		}
	}
	
	
//funciones para busqueda y seteo de puntos ************************************************************************************************************** 

	function backBuscarPunto(){
		cleanEstadoBuscarPunto();
		if ( puntoModificar == null)
			nuevoPunto();
		else
			modificarPunto();
	}

	function cleanEstadoBuscarPunto(){	
		document.getElementById('_iframe-searchPunto').src="";
		hideDiv('div_searchPunto');
		hideDiv('div_searchPuntoLatLon');
		cMapController.getMapActive().getMap().div.style.backgroundColor = "transparent";
	}
	
	function searchPointByGoogle(){
		window.parent.frames['_iframe-searchPunto'].GSearchPoint();
	}
	
	function searchPointByLatLon(){
		latitud = document.getElementById('searchLatitud').value;
		longitud = document.getElementById('searchLongitud').value;
		if (latitud == '') {
			alert('El campo latitud es obligatorio');
			return;
		}
		if (longitud == '') {
			alert('El campo longitud es obligatorio');
			return;
		}
		var lonlat = new OpenLayers.LonLat(longitud,latitud);
		lonlat = lonlat.transform(window.parent.cMapController.getMapActive().getDisplayProjection(), window.parent.cMapController.getMapActive().getProjection());
		if (isNaN(lonlat.lat) || isNaN(lonlat.lon)) {
			alert('la latitud o la longitud ingresada no es valida');
			return;
		}
		
		if (puntoModificar==null) {
			nuevoPunto();
		} else {
			modificarPunto();
		}
		marcarNuevoPunto(lonlat);
	    cleanEstadoBuscarPunto();
	}
	
	
	function setEstadoBuscarPunto(){
		if(cGeoController.implementaGeoGoogle()){
			$j("#conectandoGeo").html("Conectando con Google GeoPos...");
			$j("#errorConectandoGeo").html("Ocurrio un error intentando conectarse con los servicios de Google GeoPos,");
		}else if(cGeoController.implementaGeoBykom()){
			$j("#trTipoCalle").show();
			$j("#conectandoGeo").html("Conectando con Bykom GeoPos...");
			$j("#errorConectandoGeo").html("Ocurrio un error intentando conectarse con los servicios de Bykom GeoPos,");
		}
		showDiv('conectandoSearchPunto');
		hideDiv('conectandoSearchPuntoError');
		document.getElementById('buscarPuntoButton').style.visibility = "hidden";
		document.getElementById('_iframe-searchPunto').src="MMapFrames/misPuntosGmapGeocoder.php";
		cMapController.getMapActive().getMap().div.style.backgroundColor = "black"; 
	}
		
	function buscarPunto() {
		//mostrar panel de buscar punto
		cleanEstadoNuevoPunto();
		hideDiv('div_mispuntosPpal');
		showDiv('div_searchPunto');
		setEstadoBuscarPunto();
	}
	
	function buscarPuntoLatLon() {
		//mostrar panel de buscar punto
		cleanEstadoNuevoPunto();
		document.getElementById('searchLatitud').value = '';
		document.getElementById('searchLongitud').value = '';
		hideDiv('div_mispuntosPpal');
		showDiv('div_searchPuntoLatLon');
		
		//setEstadoBuscarPunto();
	}
			
	function buscarPuntoRefresh() {
		showDiv('conectandoSearchPunto');
		hideDiv('conectandoSearchPuntoError');
		document.getElementById('_iframe-searchPunto').src="MMapFrames/misPuntosGmapGeocoder.php";
	}
	
	/*************************FUNCIONES PARA GUARDAR EL PUNTO************************/
	var reqHandlerSaveMisPuntos = null;
		
	function validarNuevoPunto(){
		errorMsg = '';
		lat = document.getElementById("newLatitud").innerHTML;
		lon = document.getElementById("newLongitud").innerHTML;
		tipo = document.getElementById("tipoPunto").value;
		desc = document.getElementById("descPunto").value;
		nombre = document.getElementById("nombrePunto").value;
		
		if ((trim(lat)=='')||(trim(lon)==''))
			errorMsg += "Debe marcar o buscar un punto antes de guardarlo.<br>";
		
		if (trim(nombre)!=''){
			if (!_validString(nombre))
				errorMsg += "El campo 'nombre' no acepta caracteres especiales.<br>";	
			}
		else
			errorMsg += "El campo 'nombre' es obligatorio.<br>";
		
		if (tipo=='0')
			errorMsg += "El campo 'tipo' es obligatorio.<br>";	
		
		if (trim(desc)!=''){
			if (!_validString(desc))
				errorMsg += "El campo 'descripcion' no acepta caracteres especiales.<br>";	
			}

		if(LOGIN.isBykom){
			var tolerancia = $j("#toleranciaMisPuntos").val();
			if(tolerancia==""){
				errorMsg += "El campo 'tolerancia' es obligatorio.<br>";	
			}
		}
		if (errorMsg == '')
			return true;
		document.getElementById("newPointErrorDisplay").innerHTML = errorMsg;
		showDiv("newPointErrorDisplay");
		return false;	
	}
	
	function OnReadyStateChangeSaveMisPuntos(){
		ready = reqHandlerSaveMisPuntos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			//nuevoPuntoJSON = reqHandlerSaveMisPuntos.responseText.parseJSON();
			nuevoPuntoJSON = jQuery.parseJSON(reqHandlerSaveMisPuntos.responseText);
			if (nuevoPuntoJSON.id != -1) {
				alert('Grabacion realizada con exito!');
				if (puntoModificar==null){
					misPuntosHash.put(nuevoPuntoJSON.id.toString(),nuevoPuntoJSON);
					cMapController.getMapActive().getPuntosVisiblesId().push(nuevoPuntoJSON.id.toString());
					cleanEstadoNuevoPunto();
				}else{
					//modificar gmarker
					misPuntosHash.remove(nuevoPuntoJSON.id.toString());
					misPuntosHash.put(nuevoPuntoJSON.id.toString(),nuevoPuntoJSON);
					/*var pos = indexOfArray(misPuntosVisiblesId, nuevoPuntoJSON.id.toString());
					if (pos==-1)
						misPuntosVisiblesId.push(nuevoPuntoJSON.id.toString());*/
					marker = cMapController.getMapActive().getMisPuntosMarkers().get(nuevoPuntoJSON.id.toString());
					if ((marker!=null)&&(marker!='undefined')){
						cMapController.getMapActive().getMisPuntosMarkers().remove(nuevoPuntoJSON.id.toString());
					}
					//borro el punto que se modifico de hash de grupos->PUNTOSID;
					if (parseInt(puntoModificar.grupoId)!=0){
						var group = misGruposHash.get(puntoModificar.grupoId.toString());
						var pos = indexOfArray(group.PUNTOSID,puntoModificar.id);
						if (pos!=-1)
							group.PUNTOSID.splice(pos,1);
					}					
					cleanEstadoModificarPunto();
				}
				//agrego el puntoId al hash de grupos->PUNTOSID
				if (parseInt(nuevoPuntoJSON.grupoId)!=0){
					misGruposHash.get(nuevoPuntoJSON.grupoId.toString()).PUNTOSID.push(nuevoPuntoJSON.id.toString());
				}				
				cMapController.getMapActive().refreshViewPoints();
			}
			else{
				document.getElementById('newPointErrorDisplay').innerHTML = 'Ocurrio un error en la DB al tratar de guardar el punto.'
				showDiv('newPointErrorDisplay');
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}
	
	function guardarPunto() {
		hideDiv('newPointErrorDisplay');
		document.getElementById("newPointErrorDisplay").innerHTML = "";
		if (validarNuevoPunto()){		
			es_seguro = 0;
			es_flota = 0;
			es_publico = 0;
			if (parseInt(LOGIN.objetivo) == 3){
				es_flota=1;				
				if(!LOGIN.isBykom){
					if(document.getElementById('puntoPublicoCHK').checked){
						es_publico = 1;	
					}
				}
			}
			if(document.getElementById('puntoSeguroCHK').checked)
				es_seguro = 1;
			var oldGrupo = '0';
			if (puntoModificar!=null)
				oldGrupo = puntoModificar.grupoId;
	    	reqParamsMisPuntos = "COMMAND=SAVE";
    		reqParamsMisPuntos += "&ORDERID="+document.getElementById('puntoIdHID').value;
			reqParamsMisPuntos += "&NOMBRE="+document.getElementById('nombrePunto').value;
	    	reqParamsMisPuntos += "&LATITUD="+document.getElementById('newLatitud').innerHTML;
			reqParamsMisPuntos += "&LONGITUD="+document.getElementById('newLongitud').innerHTML;
    		reqParamsMisPuntos += "&DATOS="+document.getElementById('descPunto').value;
    		reqParamsMisPuntos += "&FLOTAID="+LOGIN.cuentaFk;
			reqParamsMisPuntos += "&ICONO="+document.getElementById('tipoPunto').value;
	    	reqParamsMisPuntos += "&SEGURO="+es_seguro;
			reqParamsMisPuntos += "&PUBLICO="+es_publico;
			//reqParamsMisPuntos += "&ESFLOTA="+es_flota;
			reqParamsMisPuntos += "&ESFLOTA="+LOGIN.objetivoDB;
			reqParamsMisPuntos += "&GRUPO="+document.getElementById('gruposPunto').value;
			reqParamsMisPuntos += "&OLDGRUPO="+oldGrupo;
			reqParamsMisPuntos += "&TABLAID="+LOGIN.tablaId;
			reqParamsMisPuntos += "&OBJETIVO="+LOGIN.objetivo;
			reqParamsMisPuntos += "&ISBYKOM="+LOGIN.isBykom;
			if(LOGIN.isBykom){
				reqParamsMisPuntos += "&TOLERANCIA="+$j("#toleranciaMisPuntos").val();
			}
    		autoRefreshFlag = 1;
	    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
    		if (msie) 
        	    reqHandlerSaveMisPuntos = new ActiveXObject("Microsoft.XMLHTTP");
	        else
    	        reqHandlerSaveMisPuntos = new XMLHttpRequest();			
			reqHandlerSaveMisPuntos.onreadystatechange = OnReadyStateChangeSaveMisPuntos;    
	        reqHandlerSaveMisPuntos.open("POST", "persistirpunto.php", true);
    	    reqHandlerSaveMisPuntos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			reqHandlerSaveMisPuntos.send(reqParamsMisPuntos);
		}
    }
	
	/*************************FUNCIONES PARA ELIMINAR LOS PUNTOS SELECCIONADOS************************/
	var reqHandlerDeleteMisPuntos = null;
	var deletePuntoId = null;
	
	function OnReadyStateChangeDeleteMisPuntos(){
		ready = reqHandlerDeleteMisPuntos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			deleteResponse = jQuery.parseJSON(reqHandlerDeleteMisPuntos.responseText);
			if (deleteResponse){
				if(deletePuntoId==null){ //se ejecuto con minimenu
				 	ocultarPuntosSeleccionados();
				 	//ahora remuevo los puntos y las marcas que ya fueron eliminadas de sus respectivos arrays
				 	for (i=0; i<cMapController.getMapActive().getPuntosSeleccionadosId().length; i++){
						misPuntosHash.remove(cMapController.getMapActive().getPuntosSeleccionadosId()[i].toString());					 	
					 	if (cMapController.getMapActive().getMisPuntosMarkers().containsKey(cMapController.getMapActive().getPuntosSeleccionadosId()[i].toString())){
					 		cMapController.getMapActive().getMisPuntosLayer().removeMarker(cMapController.getMapActive().getMisPuntosMarkers().get(cMapController.getMapActive().getPuntosSeleccionadosId()[i].toString()));
							cMapController.getMapActive().getMisPuntosMarkers().remove(cMapController.getMapActive().getPuntosSeleccionadosId()[i].toString());
						}
				 	}
				 	//por ultimo limpio el array de puntos seleccionados.
				 	cMapController.getMapActive().setPuntosSeleccionadosId(new Array());	
				}
				else{ //se ejecuto con popupmenu
					pos=indexOfArray(cMapController.getMapActive().getPuntosSeleccionadosId(),deletePuntoId.toString());
				    if (pos!=-1)
						cMapController.getMapActive().getPuntosSeleccionadosId().splice(pos,1);
				    cMapController.getMapActive().ocultarPunto(deletePuntoId.toString);
					misPuntosHash.remove(deletePuntoId.toString());
					if (cMapController.getMapActive().getMisPuntosMarkers().containsKey(deletePuntoId.toString())){
					 	cMapController.getMapActive().getMisPuntosLayer().removeMarker(cMapController.getMapActive().getMisPuntosMarkers().get(deletePuntoId.toString()));
						cMapController.getMapActive().getMisPuntosMarkers().remove(deletePuntoId.toString());
					}				
					deletePuntoId = null;					
				}
				cMapController.getMapActive().refreshViewPoints();
			}
			else {
				alert ("Error en consulta a DB: No se pudo eliminar el/los puntos seleccionados");
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}
	
	function eliminarPuntos(idPoint) {
		var sPoints = "";
		if(idPoint != null){
			sPoints = idPoint;
		}else{
			if(cMapController.getMapActive().getPuntosSeleccionadosId().length>0){
				sPoints += cMapController.getMapActive().getPuntosSeleccionadosId().join(",");
			}
			if(cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length>0){
				if(sPoints!=""){
					sPoints+=",";
				}
				sPoints += cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().join(",");
			}
		}
		
//		if((cMapController.getMapActive().getPuntosSeleccionadosId().length>0)||(idPoint!=null)){
//			if(idPoint!=null){
//				sPoints = idPoint;
//			}else{
//				sPoints = cMapController.getMapActive().getPuntosSeleccionadosId().join(",");
//			}
//		}
		$j.ajax({
			type: "POST",
			url: "querycontroller.php",
			data: "COMMAND=VERIFICAREGLA&IDENTIFICADOR="+sPoints+"&TIPOREGLA=1&ISBYKOM="+LOGIN.isBykom+"",
			beforeSend: function(){
			},
			success: function(data) {
				$j('#LoaderAjax').hide();
				data = jQuery.parseJSON(data);
				if(data!=0){
					alert("No puede eliminar un punto que tiene una logistica asociada");
				}else{
					eliminarPuntosOK(idPoint);
				}
			}
		});
	}
	function eliminarPuntosOK(idPoint){
		 deletePuntoId = null;
		 if((cMapController.getMapActive().getPuntosSeleccionadosId().length>0)||(idPoint!=null)){
			if (cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length>0){
				alert ('Entre su seleccion existen puntos que no tienen permisos para realizar esta operacion.');
			}
			conf = confirm('Esta a punto de eliminar el/los puntos seleccionados. ¿Desea continuar de todas formas?');
			if (conf){
		    	reqParamsMisPuntos = "COMMAND=DELETE";
				if(idPoint!=null){
	    			reqParamsMisPuntos += "&ORDERID="+idPoint;
					deletePuntoId = idPoint;
				}else{
					reqParamsMisPuntos += "&ORDERID="+cMapController.getMapActive().getPuntosSeleccionadosId().join(",");
				}
				reqParamsMisPuntos += "&OBJETIVO="+LOGIN.objetivo;
				reqParamsMisPuntos += "&CUENTAID="+LOGIN.tablaId;
				reqParamsMisPuntos += "&ISBYKOM="+LOGIN.isBykom;
    			autoRefreshFlag = 1;
	    		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
	    		if(msie){
    	    	    reqHandlerDeleteMisPuntos = new ActiveXObject("Microsoft.XMLHTTP");
	    		}else{
    	    	    reqHandlerDeleteMisPuntos = new XMLHttpRequest();
	    		}
	        	reqHandlerDeleteMisPuntos.onreadystatechange = OnReadyStateChangeDeleteMisPuntos;    
		        reqHandlerDeleteMisPuntos.open("POST", "persistirpunto.php", true);
    		    reqHandlerDeleteMisPuntos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerDeleteMisPuntos.send(reqParamsMisPuntos);
			}
		 }else{
		 	if (cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length>0){
				alert ('No esta permitido realizar esta operacion para los puntos seleccionados.');
			}else{
			 	alert ('Debe seleccionar por lo menos un punto para poder realizar esta operacion.');
			}
		 }
    }

	/*************************FUNCIONES PARA PUBLICAR/DESPUBLICAR LOS PUNTOS SELECCIONADOS************************/
	var reqHandlerPublicarMisPuntos = null;
	var publicarPuntoId = null;
	
	function OnReadyStateChangePublicarMisPuntos(){
		ready = reqHandlerPublicarMisPuntos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			//publicarResponse = reqHandlerPublicarMisPuntos.responseText.parseJSON();
			publicarResponse = jQuery.parseJSON(reqHandlerPublicarMisPuntos.responseText);
			if ((publicarResponse!=null)&&(publicarResponse!=-1)&&(publicarResponse!='undefined')){ // se pudo realizar la operacion, retorna 1 si se publico y 0 si se des-publico.	
				if(publicarPuntoId==null){ //se ejecuto con minimenu
					//ahora cambio el valor de los puntos por el devuelto (0 o 1)
				 	for (i=0; i<cMapController.getMapActive().getPuntosSeleccionadosId().length; i++){
					 	temp = misPuntosHash.get(cMapController.getMapActive().getPuntosSeleccionadosId()[i].toString());
					 	if ((temp!=null)&&(temp!='undefined'))
					 		temp.publico = publicarResponse;
				 	}
				}
				else { //se ejecuto con POPUP MENU					
					if(misPuntosHash.containsKey(publicarPuntoId.toString()))
					    misPuntosHash.get(publicarPuntoId.toString()).publico = publicarResponse;	
					publicarPuntoId = null;													  
				}
				cMapController.getMapActive().refreshViewPoints();				
			}
			else {
				alert ("Error en consulta a DB: No se pudo publicar el/los puntos seleccionados");
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}
	
	function publicarPuntos(publicar, idPoint) { //si publicar=true los puntos se publican, caso contrario se des-publican
		 publicarPuntoId = null;
		 if ((cMapController.getMapActive().getPuntosSeleccionadosId().length>0)||(idPoint!=null)){			 
			msj = 'Esta a punto de publicar el/todos los puntos seleccionados. ¿Desea continuar de todas formas?';
			if (!publicar)
				msj = 'Esta a punto de dejar de publicar el/los puntos seleccionados. ¿Desea continuar de todas formas?';
			conf = confirm(msj);
			if (conf){
				valuePub=0;
				if (publicar)
					valuePub=1;
		    	reqParamsMisPuntos = "COMMAND=PUBLICAR";
				if(idPoint!=null){
    				reqParamsMisPuntos += "&ORDERID="+idPoint.toString();
					publicarPuntoId = idPoint.toString();
				}
				else
					reqParamsMisPuntos += "&ORDERID="+cMapController.getMapActive().getPuntosSeleccionadosId().join(",");
				reqParamsMisPuntos += "&PUBLICAR="+valuePub;
    			autoRefreshFlag = 1;
	    		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
	    		if (msie) 
    	    	    reqHandlerPublicarMisPuntos = new ActiveXObject("Microsoft.XMLHTTP");
	    	    else
    	    	    reqHandlerPublicarMisPuntos = new XMLHttpRequest();
	        	reqHandlerPublicarMisPuntos.onreadystatechange = OnReadyStateChangePublicarMisPuntos;    
		        reqHandlerPublicarMisPuntos.open("POST", "persistirpunto.php", true);
    		    reqHandlerPublicarMisPuntos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerPublicarMisPuntos.send(reqParamsMisPuntos);
			}
		 }
		 else
		 	alert ('Debe seleccionar por lo menos un punto para poder realizar esta operacion.');
    }
	
	/*************************FUNCIONES PARA MARCAR PUNTOS COMO SEGURO/INSEGURO LOS PUNTOS SELECCIONADOS************************/
	var reqHandlerSeguroMisPuntos = null;
	var seguroPuntoId = null;
	
	function OnReadyStateChangeSeguroMisPuntos(){
		ready = reqHandlerSeguroMisPuntos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			//seguroResponse = reqHandlerSeguroMisPuntos.responseText.parseJSON();
			seguroResponse = jQuery.parseJSON(reqHandlerSeguroMisPuntos.responseText);
			if ((seguroResponse!=null)&&(seguroResponse!=-1)&&(seguroResponse!='undefined')){ // se pudo realizar la operacion, retorna 1 si se publico y 0 si se des-publico.
				if(seguroPuntoId==null){ //se ejecuto desde minimenu
				 	//ahora cambio el valor de los puntos por el devuelto (0 o 1)
				 	for (i=0; i<cMapController.getMapActive().getPuntosSeleccionadosId().length; i++){
						temp = misPuntosHash.get(cMapController.getMapActive().getPuntosSeleccionadosId()[i].toString());
					 	if ((temp!=null)&&(temp!='undefined'))
					 		temp.seguro = seguroResponse;
				 	}
				}
				else { //se ejecuto desde POPUP MENU
					if(misPuntosHash.containsKey(seguroPuntoId.toString()))
					    misPuntosHash.get(seguroPuntoId.toString()).seguro = seguroResponse;	
					seguroPuntoId = null;
				}					
				cMapController.getMapActive().refreshViewPoints();				
			}
			else {
				alert ("Error en consulta a DB: No se pudo marcar/desmarcar como seguro a el/los puntos seleccionados");
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}
	
	function seguroPuntos(seguro, idPoint) { //si seguro=true los puntos se marcan como seguros, caso contrario se des-aseguran
		 seguroPuntoId = null;
		 if ((cMapController.getMapActive().getPuntosSeleccionadosId().length>0)||(idPoint!=null)){	
		 	if (cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length>0)
				alert ('Entre su seleccion existen puntos que no tienen permisos para realizar esta operacion.');
			msj = 'Esta a punto de marcar como seguro a el/los puntos seleccionados. ¿Desea continuar de todas formas?';
			if (!seguro)
				msj = 'Esta a punto de desmarcar como seguro a el/los puntos seleccionados. ¿Desea continuar de todas formas?';
			conf = confirm(msj);
			if (conf){
				valuePub=0;
				if (seguro)
					valuePub=1;
		    	reqParamsMisPuntos = "COMMAND=SEGURO";
				if (idPoint!=null){
					reqParamsMisPuntos += "&ORDERID="+idPoint.toString();
					seguroPuntoId = idPoint.toString();
				}else{
					reqParamsMisPuntos += "&ORDERID="+cMapController.getMapActive().getPuntosSeleccionadosId().join(",");
				}
				reqParamsMisPuntos += "&SEGURO="+valuePub;
				reqParamsMisPuntos += "&ISBYKOM="+LOGIN.isBykom;
    			autoRefreshFlag = 1;
	    		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
	    		if (msie) 
    	    	    reqHandlerSeguroMisPuntos = new ActiveXObject("Microsoft.XMLHTTP");
	    	    else
    	    	    reqHandlerSeguroMisPuntos = new XMLHttpRequest();
	        	reqHandlerSeguroMisPuntos.onreadystatechange = OnReadyStateChangeSeguroMisPuntos;    
		        reqHandlerSeguroMisPuntos.open("POST", "persistirpunto.php", true);
    		    reqHandlerSeguroMisPuntos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerSeguroMisPuntos.send(reqParamsMisPuntos);
			}
		 }else
		 	if (cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length>0)
				alert ('No esta permitido realizar esta operacion para los puntos seleccionados.');
			else
		 		alert ('Debe seleccionar por lo menos un punto para poder realizar esta operacion.');
    }
	
	/*************************FUNCIONES PARA CONFIGURAR COMO VISIBLES POR DEFECTO A LOS PUNTOS SELECCIONADOS************************/
	var reqHandlerDefaultMisPuntos = null;
	
	function OnReadyStateChangeDefaultMisPuntos(){
		ready = reqHandlerDefaultMisPuntos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}
	
	function defaultPuntosSeleccionados() { 			 
			msj = 'Esta a punto de configurar el/todos los puntos seleccionados como visible por defecto. ¿Desea continuar de todas formas?';
			conf = confirm(msj);
			if (conf){
		    	reqParamsMisPuntos = "COMMAND=CHANGEPUNTOS";
				reqParamsMisPuntos += "&CUENTA="+ LOGIN.cuentaFk;
				reqParamsMisPuntos += "&ESFLOTA="+ LOGIN.objetivoDB;
				reqParamsMisPuntos += "&TABLAID="+LOGIN.tablaId;
				reqParamsMisPuntos += "&OBJETIVO="+LOGIN.objetivo;
				/*if (parseInt(LOGIN.objetivoDB) == 3)
					reqParamsMisPuntos += "&ESFLOTA=1";
				else
					reqParamsMisPuntos += "&ESFLOTA=0";*/
				var puntosSelMixtaId = "";
				if (cMapController.getMapActive().getPuntosSeleccionadosId().length>0){
					puntosSelMixtaId += cMapController.getMapActive().getPuntosSeleccionadosId().toString();
					if (cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().length>0)
						puntosSelMixtaId +=",";
				}
				puntosSelMixtaId += cMapController.getMapActive().getMisPuntosSeleccionadosHeredadosId().toString();		
				reqParamsMisPuntos += "&PUNTOSID="+puntosSelMixtaId;
    			autoRefreshFlag = 1;
	    		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
	    		if (msie) 
    	    	    reqHandlerDefaultMisPuntos = new ActiveXObject("Microsoft.XMLHTTP");
	    	    else
    	    	    reqHandlerDefaultMisPuntos = new XMLHttpRequest();
	        	reqHandlerDefaultMisPuntos.onreadystatechange = OnReadyStateChangeDefaultMisPuntos;    
		        reqHandlerDefaultMisPuntos.open("POST", "sections/queryConfig.php", true);
    		    reqHandlerDefaultMisPuntos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerDefaultMisPuntos.send(reqParamsMisPuntos);
			}
    }

//*********************** TRATAMIENTO DE GRUPOS *******************************//
	var reqHandlerMisGrupos;
	var grupoModificar = null;

	function nuevoGrupo(){
		//mostrar panel de nuevo grupo
		cMapController.getMapActive().setModoABMPuntos(true);
		document.getElementById('newGroupTitle').innerHTML = "Nuevo Grupo";
		document.getElementById('newGroupDesc').innerHTML = "Los grupos se utilizan para almacenar puntos que tienen caracteristicas en comun. Sugerimos que les coloque un nombre representativo.";
		hideDiv('div_mispuntosPpal');
		showDiv('div_nuevoGrupo');
		cleanFormNuevoGrupo();
	}
	
	function modificarGrupo(idGrupo){
		cMapController.getMapActive().setModoABMPuntos(true);
		document.getElementById('newGroupTitle').innerHTML = "Modificar Grupo";
		document.getElementById('newGroupDesc').innerHTML = "";
		hideDiv('div_mispuntosPpal');
		showDiv('div_nuevoGrupo');
		grupoModificar = misGruposHash.get(idGrupo.toString());
		cleanFormModificarGrupo();
	}
	
	function cleanFormNuevoGrupo(){
		hideDiv('newGroupErrorDisplay');
		document.getElementById("newGroupErrorDisplay").innerHTML = "";
		document.getElementById('grupoIdHID').value="";
		document.getElementById('descGrupo').value="";
		document.getElementById('nombreGrupo').value="";
	}
	
	function cleanFormModificarGrupo(){
		hideDiv('newGroupErrorDisplay');
		document.getElementById("newGroupErrorDisplay").innerHTML = "";
		document.getElementById('grupoIdHID').value=grupoModificar.id;
		document.getElementById('descGrupo').value=grupoModificar.datos;
		document.getElementById('nombreGrupo').value=grupoModificar.nombre;
	}
	
	function cleanEstadoNuevoGrupo(){ //limpia el mapa del estado "MODIFICAR/NUEVO GRUPO"
		cMapController.getMapActive().setModoABMPuntos(false);
		hideDiv('div_nuevoGrupo');
		showDiv('div_mispuntosPpal');
	}
	
	function OnReadyStateChangeMisGrupos(){
		ready = reqHandlerMisGrupos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			misGruposJSON = jQuery.parseJSON(reqHandlerMisGrupos.responseText);
			if (misGruposJSON.length != 'undefined') {	
				for (i=0; i<misGruposJSON.length; i++)
					misGruposHash.put(misGruposJSON[i].id.toString(),misGruposJSON[i]);				
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
			cMapController.CargarMisPuntos();
		}
	}
	
	function CargarMisGrupos() {
    	reqParamsMisGrupos = "COMMAND=MISGRUPOS";
    	reqParamsMisGrupos += "&CUENTA=" + LOGIN.cuentaFk;
		reqParamsMisGrupos += "&ESFLOTA="+ LOGIN.objetivoDB;
		reqParamsMisGrupos += "&OBJETIVO="+ LOGIN.objetivo;
		reqParamsMisGrupos += "&TABLAID="+ LOGIN.tablaId;
		reqParamsMisGrupos += "&ISBYKOM="+ LOGIN.isBykom;
		/*if (parseInt(LOGIN.objetivoDB) == 3)
			reqParamsMisGrupos += "&ESFLOTA=1";
		else
			reqParamsMisGrupos += "&ESFLOTA=0";*/
    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
    	if (msie) 
            reqHandlerMisGrupos = new ActiveXObject("Microsoft.XMLHTTP");
        else
            reqHandlerMisGrupos = new XMLHttpRequest();
        reqHandlerMisGrupos.onreadystatechange = OnReadyStateChangeMisGrupos;    
        reqHandlerMisGrupos.open("POST", "querycontroller.php", true);
        reqHandlerMisGrupos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		reqHandlerMisGrupos.send(reqParamsMisGrupos);
    }
	
	function validarNuevoGrupo(){
		errorMsg = '';
		desc = document.getElementById("descGrupo").value;
		nombre = document.getElementById("nombreGrupo").value;
		
		if (trim(nombre)!=''){
			if (!_validString(nombre))
				errorMsg += "El campo 'nombre' no acepta caracteres especiales.<br>";	
			}
		else
			errorMsg += "El campo 'nombre' es obligatorio.<br>";
		
		if (trim(desc)!=''){
			if (!_validString(desc))
				errorMsg += "El campo 'descripcion' no acepta caracteres especiales.<br>";	
			}

		if (errorMsg == '')
			return true;
		document.getElementById("newGroupErrorDisplay").innerHTML = errorMsg;
		showDiv("newGroupErrorDisplay");
		return false;	
	}
	
	var reqHandlerSaveMisGrupos;
//	function OnReadyStateChangeSaveMisGrupos(){
//		ready = reqHandlerSaveMisGrupos.readyState;
//		if (ready == READY_STATE_COMPLETE) {
//			//nuevoGrupoJSON = reqHandlerSaveMisGrupos.responseText.parseJSON();
//			nuevoGrupoJSON = jQuery.parseJSON(reqHandlerSaveMisGrupos.responseText);
//			if (nuevoGrupoJSON.id != -1) {		
//				misGruposHash.put(nuevoGrupoJSON.id.toString(),nuevoGrupoJSON);
//				alert('Grabacion realizada con exito!');
//				cleanEstadoNuevoGrupo();
//				cMapController.getMapActive().refreshViewPoints();
//			}
//			else{
//				document.getElementById('newGroupErrorDisplay').innerHTML = 'Ocurrio un error en la DB al tratar de guardar el grupo.'
//				showDiv('newGroupErrorDisplay');
//			}
//			$j("#iconoMapa").removeClass().addClass("icono_mapa");
//			autoRefreshFlag = 0;
//		}
//	}
//	function guardarGrupo() {
//		hideDiv('newGroupErrorDisplay');
//		document.getElementById("newGroupErrorDisplay").innerHTML = "";
//		if (validarNuevoGrupo()){	
//			es_flota = 0;
//			if (parseInt(LOGIN.objetivoDB) == 3){
//				es_flota=1;				
//			}
//	    	reqParamsMisGrupos = "COMMAND=SAVEGROUP";
//    		reqParamsMisGrupos += "&ORDERID="+document.getElementById('grupoIdHID').value;
//			reqParamsMisGrupos += "&NOMBRE="+document.getElementById('nombreGrupo').value;
//    		reqParamsMisGrupos += "&DATOS="+document.getElementById('descGrupo').value;
//    		reqParamsMisGrupos += "&FLOTAID="+LOGIN.cuentaFk;
//			reqParamsMisGrupos += "&ESFLOTA="+LOGIN.objetivoDB;
//			reqParamsMisGrupos += "&TABLAID="+LOGIN.tablaId;
//			reqParamsMisGrupos += "&OBJETIVO="+LOGIN.objetivo;
//    		autoRefreshFlag = 1;
//	    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
//    		if (msie) 
//        	    reqHandlerSaveMisGrupos = new ActiveXObject("Microsoft.XMLHTTP");
//	        else
//    	        reqHandlerSaveMisGrupos = new XMLHttpRequest();			
//			reqHandlerSaveMisGrupos.onreadystatechange = OnReadyStateChangeSaveMisGrupos;    
//	        reqHandlerSaveMisGrupos.open("POST", "persistirpunto.php", true);
//    	    reqHandlerSaveMisGrupos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//			reqHandlerSaveMisGrupos.send(reqParamsMisGrupos);
//		}
//    }
	
	var reqHandlerDeleteMisGrupos = null;
	var deleteGrupoId = null;
//	function OnReadyStateChangeDeleteMisGrupos(){
//		ready = reqHandlerDeleteMisGrupos.readyState;
//		if (ready == READY_STATE_COMPLETE) {
//			//deleteResponse = reqHandlerDeleteMisGrupos.responseText.parseJSON();
//			deleteResponse = jQuery.parseJSON(reqHandlerDeleteMisGrupos.responseText);
//			if (deleteResponse){
//				if(deleteGrupoId!=null){
//					var grupo = misGruposHash.get(deleteGrupoId.toString());	
//							
//				 	//ahora remuevo los puntos y las marcas que ya fueron eliminadas de sus respectivos arrays
//					for (var i=0; i<grupo.PUNTOSID.length; i++)
//						misPuntosHash.get(grupo.PUNTOSID[i].toString()).grupoId=0;	//dejo los puntos en el directorio raiz...
//					misGruposHash.remove(deleteGrupoId.toString());
//					deleteGrupoId = null;			
//				}
//				cMapController.getMapActive().refreshViewPoints();
//			}
//			else {
//				alert ("Error en consulta a DB: No se pudo eliminar el/los grupos seleccionados");
//			}
//			$j("#iconoMapa").removeClass().addClass("icono_mapa");
//			autoRefreshFlag = 0;
//		}
//	}
//	function eliminarGrupos(idGrupo) {
//			deleteGrupoId = null;
//			conf = confirm('Esta a punto de eliminar el/los grupos seleccionados y todos los puntos que este contiene. ¿Desea continuar de todas formas?');
//			if (conf){
//		    	reqParamsMisGrupos = "COMMAND=DELETEGROUP";
//	    		reqParamsMisGrupos += "&ORDERID="+idGrupo;
//				deleteGrupoId = idGrupo;
//    			autoRefreshFlag = 1;
//	    		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
//	    		if (msie) 
//    	    	    reqHandlerDeleteMisGrupos = new ActiveXObject("Microsoft.XMLHTTP");
//	    	    else
//    	    	    reqHandlerDeleteMisGrupos = new XMLHttpRequest();
//	        	reqHandlerDeleteMisGrupos.onreadystatechange = OnReadyStateChangeDeleteMisGrupos;    
//		        reqHandlerDeleteMisGrupos.open("POST", "persistirpunto.php", true);
//    		    reqHandlerDeleteMisGrupos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//				reqHandlerDeleteMisGrupos.send(reqParamsMisGrupos);
//			}
//    }
	
	function checkedGrupo(idGrupo, checkedValue){		
		var fields = document.getElementsByName('boxPoints[]');
		var groupPoints = misGruposHash.get(idGrupo.toString()).PUNTOSID;
		for (i = 0; i < fields.length; i++)
			if (fields[i].checked!=checkedValue){
				var pos=indexOfArray(groupPoints,fields[i].value.toString());
				if (pos!=-1) 
					fields[i].click();
			}
	}


//DECLARACION DE EVENTOS
	function initMisPuntosEvents() {
			//Nuevo Punto
			OpenLayers.Control.NewPoint = OpenLayers.Class(OpenLayers.Control, {                
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },
 
                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    ); 
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.onClick
                        }, this.handlerOptions
                    );
                }, 
 
                onClick: function(e) {
                    var pixel = new OpenLayers.Pixel(e.xy.x, e.xy.y);
                    var lonlat = cMapController.getMapActive().getMap().getLonLatFromPixel(pixel);
                    window.marcarNuevoPunto(lonlat);
                }
 
            });
		   
		   //Modificar Punto
			OpenLayers.Control.UpdatePoint = OpenLayers.Class(OpenLayers.Control, {                
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },
 
                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    ); 
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.onClick
                        }, this.handlerOptions
                    );
                }, 
 
                onClick: function(e) {
					var pixel = new OpenLayers.Pixel(e.xy.x, e.xy.y);
                    var lonlat = cMapController.getMapActive().getMap().getLonLatFromPixel(pixel);					
                    marcarNuevoPunto(lonlat);
                } 			
            });
			
			newPointEvents = new OpenLayers.Control.NewPoint();			
			//map.addControl(newPointEvents);
			newPointEvents.deactivate();
	}

/*--------------------- funciones para encontrar moviles cercanos a un punto ---------------------------------- */
function mostrarResumenRecorrido(divId){
	if($j("#"+divId).css("display") == "none"){
		$j("#"+divId).show();
	}else{
		$j("#"+divId).hide();
	}
}
function traducir(divId){
	var htmlOrigen = $j("#"+divId).html();
	htmlOrigen = htmlOrigen.replace( new RegExp("Head <b>north</b> on","g"),"Dir�jase hacia el <b>norte</b> en");
	htmlOrigen = htmlOrigen.replace( new RegExp("Head <b>south</b> on","g"),"Dir�jase hacia el <b>sur</b> en");
	htmlOrigen = htmlOrigen.replace( new RegExp("toward ","g"),"hacia");
	htmlOrigen = htmlOrigen.replace( new RegExp("Turn <b>right</b> at","g"),"Gira a la <b>derecha</b>");
	htmlOrigen = htmlOrigen.replace( new RegExp("Turn <b>left</b> at","g"),"Gira a la <b>izquierda</b>");
	$j("#"+divId).html(htmlOrigen);
}
function printTableMovilesCercanosPunto(gDC,tipo){
		var idMinimenu = 'minimenuMCP'+gDC.id;
		var isFromDG = gDC.isFromGestorDir;
		//var point = ((isFromDG)?gestorDirHash.get(gDC.id.substring(3)):misPuntosHash.get(gDC.id));
		var point = ((isFromDG)?cMapController.getMapActive().getGestorDirHash().get(gDC.id.substring(3)):misPuntosHash.get(gDC.id));
		var table = '<div id="containerMCP'+gDC.id+'">';
		table += '<div class="MiniMenu" id="'+idMinimenu+'">';
		table += '<table width="330" cellspacing="0" cellpadding="1">';
		table += '<tr>';
		table += '  <td colspan="5">';
		if(isFromDG){
			table += '<span class="sectionTITLE">Moviles mas cercanos a la direccion "'+point.name+'":</span>';
		}else{
			table += '<span class="sectionTITLE">Moviles mas cercanos al punto "'+point.nombre+'":</span>'; 
		}
		table += ' </td>';
		table += '</tr>';
		table += '<tr>';
		table += ' <td><span class="resaltado">Moviles</span></td>';
		table += ' <td><span class="resaltado">Distancias</span></td>';
		table += ' <td></td>';
		table += ' <td></td>';
		table += ' <td></td>';
		table += '</tr>';
		if (gDC.movilesDistances.length>0){
			for (var i=0; (i<gDC.movilesDistances.length && i<MAXMOVILCERCA); i++){
				if(tipo==1 || tipo==2 || tipo==3){
					distance = gDC.movilesDistances[i].distanceText;
				}else{	
					var dis = gDC.movilesDistances[i].distance.toFixed(3).toString();
					var disKm = dis.slice(0,dis.indexOf('.'));
					var disMts = dis.slice(dis.indexOf('.')+1);
					var distance = (disKm == '0' || disKm == '') ? "" : (disKm +'km ');
					distance += (disMts == '0' || disMts == '') ? "" : (disMts + 'm');
					distance = (distance == '') ? "0m" : distance;
				}
				var movil = misVehiculosHash.get(gDC.movilesDistances[i].movilId);
				table += '<tr>';
				table += ' <td><span class="inputTEXT">'+movil.label+'</span></td>';
				table += ' <td><span class="inputTEXT">'+distance+'</span></td>';
				table += ' <td><img src="assets/templates/aplay/imagenes/acordeon/barras/seleccion_actual/icono_seguir.png" border="0" onclick="cMapController.getMapActive().seguirMovil('+movil.id+');" title="Seguir este movil" style="cursor:pointer;"/></td>';
				table += ' <td><img src="assets/templates/aplay/imagenes/acordeon/barras/seleccion_actual/icono_centrar.png" onclick="dejarDeSeguir(); cMapController.getMapActive().localizarMovil('+movil.id+');" title="Localizar este movil" border="0" style="cursor:pointer;"/></td>';
				if(tipo==1 || tipo==2 || tipo==3){
					table += ' <td><img src="assets/templates/aplay/imagenes/acordeon/barras/historico/icono_recorrido.png" onclick="dejarDeSeguir(); cMapController.getMapById('+cMapController.getMapActive().getId()+').showDistanceLine(\''+gDC.id+'\',2,\''+movil.id+'\');" title="Mostrar distancia en el mapa" border="0" style="cursor:pointer;"/></td>';
					table += ' <td><img src="assets/templates/aplay/imagenes/acordeon/barras/globales/icono_cancelar.png" onclick="cMapController.getMapById('+cMapController.getMapActive().getId()+').removeDistancesCercaniasLayer(\''+movil.id+'\');" title="Eliminar la marca seleccionada" border="0" style="cursor:pointer;"/></td>';
					table += ' <td><img src="assets/templates/aplay/imagenes/acordeon/barras/globales/reporte.png" onclick=" mostrarResumenRecorrido(\'movilResumen_'+movil.id+'\')" title="Mostrar resumen de recorrido" border="0" style="cursor:pointer;"/></td>';
				}else{
					table += ' <td><img src="js/tablero/images/BTNdistancia.gif" onclick="dejarDeSeguir(); cMapController.getMapById('+cMapController.getMapActive().getId()+').putHighlightCercanias(\''+gDC.id+'\',2,\''+movil.id+'\');" title="Mostrar distancia en el mapa" border="0" style="cursor:pointer;"/></td>';
				}
				
				table += '</tr>';
				table += '<tr><td colspan="8">';
				table += '<div id="movilResumen_'+movil.id+'" style="display:none;"></div>';
				table += '</td></tr>';
			}
		}else{
			table += '<tr><td colspan="5"><span class="inputTEXT">No existen moviles visibles que se encuentren en cercanias de este punto.</span></td></tr>';		
		}
		table += '</table>';
		table += '</div>';
		table += '</div>';
		document.getElementById('genericDHTMLWindowDiv').innerHTML=table;		
		if(tipo==1 || tipo==2 || tipo==3){
			if (gDC.movilesDistances.length>0){
				for (var i=0; (i<gDC.movilesDistances.length && i<MAXMOVILCERCA); i++){
					var movil = misVehiculosHash.get(gDC.movilesDistances[i].movilId);
					var directionsDisplay = new google.maps.DirectionsRenderer();
					directionsDisplay.setPanel(document.getElementById("movilResumen_"+movil.id));
					directionsDisplay.setDirections(gDC.movilesDistances[i].resp);
				}
			}
		}	
		var idMap = cMapController.getMapActive().getId();
		
		minimenu = new MiniMenu({
     							name: idMinimenu,
     							contentId: idMinimenu,
								width:'355px',
								height:'508px'
     							});
		
		minimenu.addButton({
							classButton: 'movilCerca',
							onClickFunction: function(){
												dejarDeSeguir();
												if(tipo==1 || tipo==2 || tipo==3){
													cMapController.getMapById(idMap).showDistanceLine(gDC,0);
												}else{
													cMapController.getMapById(idMap).putHighlightCercanias(gDC,0);
												}
											 },
							info: 'Mostrar distancias generales'
						  });
		
		minimenu.addButton({
							classButton: 'movilCercaZoom',
							onClickFunction: function(){
												dejarDeSeguir();
												if(tipo==1 || tipo==2 || tipo==3){
													cMapController.getMapById(idMap).showDistanceLine(gDC,1);
												}else{
													cMapController.getMapById(idMap).putHighlightCercanias(gDC,1);
												}
											 },
							info: 'Mostrar distancias acercando las mas proximas'
						  });
		
		if(tipo==1 || tipo==2 || tipo==3){
			minimenu.addButton({
						classButton: 'eliminarMarcas',
						onClickFunction: function(){
							cMapController.getMapById(idMap).removeAllDistancasCercaniasLayer();
						},
						info: 'Eliminar todas las marcas de recorridos'
					});
			if(tipo==1){ 
				minimenu.addButton({
					classButton: 'cambiarAPie',
					onClickFunction: function(){
						cMapController.getMapById(idMap).generateMovilesCercanosPuntoDWB(point.id.toString(),2, false);
				},
				info: 'Mostrar recorrido a pie'
				});
				$j(".cambiarAPie").css("width","37px");
			}
			if(tipo==2){
				minimenu.addButton({
					classButton: 'cambiarAMovil',
					onClickFunction: function(){
						cMapController.getMapById(idMap).generateMovilesCercanosPuntoDWB(point.id.toString(),1, false);
				},
				info: 'Mostrar recorrido en automovil'
				});
				$j(".cambiarAMovil").css("width","37px");
			}		
		}
}
